急急急!在线等![累加求平均值]

来源:百度知道 编辑:UC知道 时间:2024/06/09 00:42:46
nt i;
int Rdata,Gdata,Bdata;
int SUMR=0,SUMG=0,SUMB=0;
int AverR,AverB,AverG;
for(x=100;x<104;x++)
{
for(y=100;y<104;y++)
{
int Rdata = *((BYTE *)(Lphbm + x*3 + iWid*(cameraParV-y-1) + 2));
int Gdata = *((BYTE *)(Lphbm + x*3 + iWid*(cameraParV-y-1) + 1));
int Bdata = *((BYTE *)(Lphbm + x*3 + iWid*(cameraParV-y-1) + 0));

i++;

SUMR = Rdata+SUMR;
SUMG = Gdata+SUMG;
SUMB = Bdata+SUMB;
}
}
AverR=SUMR/i;
AverG=SUMG/i;
AverB=SUMB/i;

为什么得出来的是很奇怪的数,可我认为没错,再线等,大家帮我想想办法
我把它放到第一个for里,得到的数值是一样的,Rdata,Gdata,Bdata是负数很大的值,而且,SUMR = Rdata+SUMR;
SUMG = Gdata+SUMG;
SUMB = Bdata+SUMB; 中,左右的SUM值是一样的,按理说左边的应该是右边的下一个值才对啊

逻辑错误吧。。虽然我没很仔细的看
for(y=100;y<104;y++)
{
int Rdata = *((BYTE *)(Lphbm + x*3 + iWid*(cameraParV-y-1) + 2));
int Gdata = *((BYTE *)(Lphbm + x*3 + iWid*(cameraParV-y-1) + 1));
int Bdata = *((BYTE *)(Lphbm + x*3 + iWid*(cameraParV-y-1) + 0));

i++;

SUMR = Rdata+SUMR;
SUMG = Gdata+SUMG;
SUMB = Bdata+SUMB;
}
你的for嵌套循环 第一个循环等于是假的 直接套了第二个
你看看 是不是要把
SUMR = Rdata+SUMR;
SUMG = Gdata+SUMG;
SUMB = Bdata+SUMB;
放入第一for循环?
或别的